from twisted.python.util import println


class Student(object):

    ##通过这个方法我们可以为学生对象绑定name和age两个属性
    def __init__(self, name, age, xiaoming):
        self.name = name
        self.age = age
        self.__xiaoming = xiaoming

    def study(self, course_name):
        print("%s正在学习%s" % (self.name, course_name))

    def watch_movie(self):
        if self.age > 18:
            print("熊出没\n")
        else:
            println("带劲电影")

    ##如果希望属性是私有的，在给属性命名时可以用两个下划线作为开头
    def __sleep(self):
        print("睡觉")

if __name__ == '__main__':
    student = Student("tuanzhang", 19, "lalal")
    student.study("python")
    student.watch_movie()
    println(student.name)

    ## 但是，Python并没有从语法上严格保证私有属性或方法的私密性，它只是给私有的属性和方法换了一个名字来妨碍对它们的访问，事实上如果你知道更换名字的规则仍然可以访问到它们，下面的代码就可以验证这一点。之所以这样设定，可以用这样一句名言加以解释，就是
    ## "We are all consenting adults here"。因为绝大多数程序员都认为开放比封闭要好，而且程序员要自己为自己的行为负责。
    student._Student__sleep()

